package com.retail.order.service;

import com.retail.core.common.CommonService;
import com.retail.order.entity.request.RetailSettleOrderRequest;
import com.retail.order.entity.vo.NameValueVo;
import com.retail.order.entity.vo.RetailOrderDailyStasticsVo;
import com.retail.order.entity.vo.RetailSettleOrderVo;
import com.retail.order.entity.vo.StatisticsOrderDetailVo;
import com.retail.shop.entity.vo.RetailShopVo;
import com.retail.system.entity.vo.AdminStatisticsShopVo;

import java.util.List;
import java.util.Map;

/**
 * 订单信息 Service
 *
 * @author Administrator
 */
public interface RetailSettleOrderService extends CommonService<RetailSettleOrderRequest, RetailSettleOrderVo> {
    RetailSettleOrderVo getModelByOrderIdAndSource(String orderId, Integer orderSource);

    /**
     * 获取用户订单信息
     *
     * @param adminId 用户编号
     * @return
     */
    List<RetailSettleOrderVo> findOwnerOrderByAdminId(String adminId);

    /**
     * @param poiId 门店编号
     * @return
     */
    List<RetailSettleOrderVo> getOrdersByShop(String poiId);

    List<RetailSettleOrderVo> findOwnerOrderByAdminIdNotInVerifDetail(Long adminId);

    List<RetailSettleOrderVo> myOrderList(String adminId);

    List<RetailSettleOrderVo> myShopOrderList(String adminId);

    RetailSettleOrderVo getModelByOrderId(String orderId);

    AdminStatisticsShopVo statisticsOrder(Long id);

    // 我自己审核通过的订单
    List<RetailSettleOrderVo> findSuccessOwnerOrderByAdminId(String s);
    List<RetailSettleOrderVo> findSuccessOwnerOrderByAdminIdAndId(String s);

    Map<String, Object> getOrderMonthStastics(Long adminId, Integer adminType, Long startTimestamp, Long endTimestamp);

    List<RetailOrderDailyStasticsVo> getDailyOrderMonthStastics(Long adminId, Integer adminType, Long startTimestamp, Long endTimestamp);


    /**
     * 同步抖音门店数据
     * @param billDate 订单时间
     * @return
     */
    List<RetailSettleOrderRequest> syncTokTikOrderList(String billDate, List<RetailShopVo> allShops);

    Integer allOrders();

    /**
     * 商户数订单统计
     * @param adminId
     * @return
     */
    Map<String, Object> orderFullStatisticsByAdminId(Long adminId);

    /**
     * 团队长数据统计
     * @param adminId
     * @return
     */
    Map<String, Object> orderFullStatisticsByTuanduizId(Long adminId);

    List<StatisticsOrderDetailVo> orderFullStatistics(Long adminId, Integer userType, String startTime, String endTime, String dateType);

    List<NameValueVo> orderShopStatistics(Long adminId, Integer userType, String startTime, String endTime, String dateType);

    List<StatisticsOrderDetailVo> ordershopListFullStatistics(Long adminId, Integer userType, String startTime, String endTime, String dateType);

}
